home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Workbench Add-On
/
Workbench Add-On - Volume 1.iso
/
BBS-Archive
/
Dev
/
Obrn-A_1.6_lib.lha
/
oberon-a
/
source3.lha
/
source
/
3rdParty
/
ReqTools.mod
< prev
next >
Wrap
Text File
|
1995-05-26
|
22KB
|
780 lines
(*
** Filename: reqtools.mod
** Release: 2.0
**
** Oberon-A interface for reqtools.library.
**
** (C) Copyright 1991/1992 Nico François
** All Rights Reserved
**
** Needs OC >=5.16 to compile
*)
<* STANDARD- *>
MODULE [2] ReqTools;
IMPORT
SYS := SYSTEM, Kernel, E := Exec, D := Dos, I := Intuition,
GFX := Graphics, UT := Utility, S := Sets;
TYPE
ReqToolsBasePtr* = POINTER TO ReqToolsBase;
ReqToolsBase* = RECORD (E.LibraryBase)
libNode-: E.Library;
flags-: S.SET8;
pad0, pad1, pad2: SHORTINT;
segList-: D.BPTR;
(* The following library bases may be read and used by your program *)
intuitionBase-: I.IntuitionBasePtr;
gfxBase-: GFX.GfxBasePtr;
dosBase-: D.DosLibraryPtr;
(*
Next two library bases are only (and always) valid on Kickstart 2.0!
1.3 version of reqtools also initializes these when run on 2.0.
*)
gadToolsBase-: E.LibraryPtr;
utilityBase-: E.LibraryPtr;
END;
CONST
(* types of requesters, for AllocRequestA() *)
TypeFileReq* = 0;
TypeReqInfo* = 1;
TypeFontReq* = 2;
TypeScreenModeReq* = 3;
TYPE
ReqToolsReqPtr * = POINTER TO ReqToolsReq;
ReqToolsReq * = RECORD END; (* make them compatible *)
(***********************
* *
* File requester *
* *
***********************)
(* structure _MUST_ be allocated with AllocRequest() *)
TYPE
FileRequesterPtr* = POINTER TO FileRequester;
FileRequester* = RECORD (ReqToolsReq)
reqPos*: LONGINT;
leftOffset*: INTEGER;
topOffset*: INTEGER;
flags*: S.SET32;
(* OBSOLETE IN V38! DON'T USE! *) hook*: UT.HookPtr;
dir-: E.STRPTR; (* READ ONLY! Change with ChangeReqAttrA()! *)
matchPat-: E.STRPTR; (* READ ONLY! Change with ChangeReqAttrA()! *)
defaultFont*: GFX.TextFontPtr;
waitPointer*: E.APTR;
(* V38 *)
lockWindow*: LONGINT;
shareIDCMP*: LONGINT;
intuiMsgFunc*: UT.HookPtr;
reserved1*: INTEGER;
reserved2*: INTEGER;
reserved3*: INTEGER;
reqHeight-: INTEGER; (* READ ONLY! Use RTFI_Height tag! *)
(* Private data follows! HANDS OFF :-) *)
END;
(* returned by FileRequestA() if multiselect is enabled,
free list with FreeFileList() *)
FileListPtr* = POINTER TO FileList;
FileList* = RECORD
next*: FileListPtr;
strLen*: LONGINT; (* -1 for directories *)
name*: E.STRPTR;
END;
(* structure passed to RTFI_FilterFunc callback hook by
volume requester (see RTFI_VolumeRequest tag) *)
VolumeEntryPtr* = POINTER TO VolumeEntry;
VolumeEntry* = RECORD
type*: LONGINT; (* DLT_DEVICE or DLT_DIRECTORY *)
name*: E.STRPTR;
END;
(***********************
* *
* Font requester *
* *
***********************)
(* structure _MUST_ be allocated with AllocRequest() *)
FontRequesterPtr* = POINTER TO FontRequester;
FontRequester* = RECORD (ReqToolsReq)
reqPos*: LONGINT;
leftOffset*: INTEGER;
topOffset*: INTEGER;
flags*: S.SET32;
(* OBSOLETE IN V38! DON'T USE! *) hook*: UT.HookPtr;
attr-: GFX.TextAttr; (* READ ONLY! *)
defaultFont*: GFX.TextFontPtr;
waitPointer*: E.APTR;
(* V38 *)
lockWindow*: LONGINT;
shareIDCMP*: LONGINT;
intuiMsgFunc*: UT.HookPtr;
reserved1*: INTEGER;
reserved2*: INTEGER;
reserved3*: INTEGER;
reqHeight-: INTEGER; (* READ ONLY! Use RTFI_Height tag! *)
(* Private data follows! HANDS OFF :-) *)
END;
(*************************
* *
* ScreenMode requester *
* *
*************************)
(* structure _MUST_ be allocated with rtAllocRequest() *)
ScreenModeRequesterPtr* = POINTER TO ScreenModeRequester;
ScreenModeRequester* = RECORD (ReqToolsReq)
reqPos*: LONGINT;
leftOffset*: INTEGER;
topOffset*: INTEGER;
flags*: S.SET32;
private1*: LONGINT;
displayID-: LONGINT; (* READ ONLY! *)
displayWidth-: INTEGER; (* READ ONLY! *)
displayHeight-: INTEGER; (* READ ONLY! *)
defaultFont*: GFX.TextFontPtr;
waitPointer*: E.APTR;
lockWindow*: LONGINT;
shareIDCMP*: LONGINT;
intuiMsgFunc*: UT.HookPtr;
reserved1*: INTEGER;
reserved2*: INTEGER;
reserved3*: INTEGER;
reqHeight-: INTEGER; (* READ ONLY! Use RTFI_Height tag! *)
displayDepth*: INTEGER;
overscanType*: INTEGER;
autoScroll*: LONGINT;
(* Private data follows! HANDS OFF :-) *)
END;
(***********************
* *
* Requester Info *
* *
***********************)
(* for EZRequestA(), GetLongA(), GetStringA() and PaletteRequestA(),
_MUST_ be allocated with AllocRequest() *)
ReqInfoPtr* = POINTER TO ReqInfo;
ReqInfo* = RECORD (ReqToolsReq)
reqPos*: LONGINT;
leftOffset*: INTEGER;
topOffset*: INTEGER;
width*: LONGINT; (* not for EZRequestA() *)
reqTitle*: E.STRPTR; (* currently only for EZRequestA() *)
flags*: S.SET32;
defaultFont*: GFX.TextFontPtr; (* currently only for PaletteRequestA() *)
waitPointer*: E.APTR;
(* V38 *)
lockWindow: LONGINT;
shareIDCMP: LONGINT;
intuiMsgFunc: UT.HookPtr;
(* structure may be extended in future *)
END;
(***********************
* *
* Handler Info *
* *
***********************)
(* for ReqHandlerA(), will be allocated for you when you use
the ReqHandler tag, never try to allocate this yourself! *)
HandlerInfoPtr* = POINTER TO HandlerInfo;
HandlerInfo* = RECORD
private1: LONGINT;
waitMask*: S.SET32;
doNotWait*: E.LONGBOOL; (* ? *)
(* Private data follows, HANDS OFF :-) *)
END;
(* possible return codes from ReqHandlerA() *)
CONST
CallHandler* = 080000000H;
(*************************************
* *
* TAGS *
* *
*************************************)
TagBase* = UT.user;
(*** tags understood by most requester functions ***)
(* optional pointer to window *)
Window* = TagBase+1;
(* idcmp flags requester should abort on (useful for IDCMP_DISKINSERTED) *)
IDCMPFlags* = TagBase+2;
(* position of requester window (see below) - default REQPOS_POINTER *)
ReqPos* = TagBase+3;
(* signal mask to wait for abort signal *)
LeftOffset* = TagBase+4;
(* topedge offset of requester relative to position specified by ReqPos *)
TopOffset* = TagBase+5;
(* name of public screen to put requester on (Kickstart 2.0 only!) *)
PubScrName* = TagBase+6;
(* address of screen to put requester on *)
Screen* = TagBase+7;
(* tagdata must hold the address of (!) an APTR variable *)
DoReqHandler* = TagBase+8;
(* font to use when screen font is rejected, _MUST_ be fixed-width font!
(TextFontPtr , not TextAttrPtr ! - default GfxBase->DefaultFont *)
DefaultFont* = TagBase+9;
(* boolean to set the standard wait pointer in window - default FALSE *)
WaitPointer* = TagBase+10;
(* (V38) char preceding keyboard shortcut characters (will be underlined) *)
Underscore* = TagBase+11;
(* (V38) share IDCMP port with window - default FALSE *)
ShareIDCMP* = TagBase+12;
(* (V38) lock window and set standard wait pointer - default FALSE *)
LockWindowTag* = TagBase+13;
(* (V38) boolean to make requester's screen pop to front - default TRUE *)
ScreenToFront* = TagBase+14;
(* (V38) Requester should use this font - default: screen font *)
TextAttr* = TagBase+15;
(* (V38) call this hook for every IDCMP message not for requester *)
IntuiMsgFunc* = TagBase+16;
(* (V38) Locale ReqTools should use for text *)
Locale* = TagBase+17;
(*** tags specific to EZRequestA ***)
(* title of requester window - default "Request" or "Information" *)
ezReqTitle* = TagBase+20;
(* TagBase+21 reserved *)
(* various flags (see below) *)
ezFlags* = TagBase+22;
(* default response (activated by pressing RETURN) - default TRUE *)
ezDefaultResponse* = TagBase+23;
(*** tags specific to GetLongA ***)
(* minimum allowed value - default MININT *)
glMin* = TagBase+30;
(* maximum allowed value - default MAXINT *)
glMax* = TagBase+31;
(* suggested width of requester window (in pixels) *)
glWidth* = TagBase+32;
(* boolean to show the default value - default TRUE *)
glShowDefault* = TagBase+33;
(* (V38) string with possible responses - default " _Ok |_Cancel" *)
glGadFmt * = TagBase+34;
(* (V38) optional arguments for RTGL_GadFmt *)
glGadFmtArgs* = TagBase+35;
(* (V38) invisible typing - default FALSE *)
glInvisible* = TagBase+36;
(* (V38) window backfill - default TRUE *)
glBackFill* = TagBase+37;
(* (V38) optional text above gadget *)
glTextFmt* = TagBase+38;
(* (V38) optional arguments for RTGS_TextFmt *)
glTextFmtArgs* = TagBase+39;
(* (V38) various flags (see below) *)
glFlags* = ezFlags;
(*** tags specfic to GetStringA ***)
(* suggested width of requester window (in pixels) *)
gsWidth* = glWidth;
(* allow empty string to be accepted - default FALSE *)
gsAllowEmpty* = TagBase+80;
(* (V38) string with possible responses - default " _Ok |_Cancel" *)
gsGadFmt * = glGadFmt;
(* (V38) optional arguments for RTGS_GadFmt *)
gsGadFmtArgs* = glGadFmtArgs;
(* (V38) invisible typing - default FALSE *)
gsInvisible* = glInvisible;
(* (V38) window backfill - default TRUE *)
gsBackFill* = glBackFill;
(* (V38) optional text above gadget *)
gsTextFmt* = glTextFmt;
(* (V38) optional arguments for RTGS_TextFmt *)
gsTextFmtArgs* = glTextFmtArgs;
(* (V38) various flags (see below) *)
gsFlags* = ezFlags;
(*** tags specific to FileRequestA ***)
(* various flags (see below) *)
fiFlags* = TagBase+40;
(* suggested height of file requester *)
fiHeight* = TagBase+41;
(* replacement text for 'Ok' gadget (max 6 chars) *)
fiOkText* = TagBase+42;
(* (V38) bring up volume requester, tag data holds flags (see below) *)
fiVolumeRequest* = TagBase+43;
(* (V38) call this hook for every file in the directory *)
fiFilterFunc* = TagBase+44;
(* (V38) allow empty file to be accepted - default FALSE *)
fiAllowEmpty* = TagBase+45;
(*** tags specific to FontRequestA ***)
(* various flags (see below) *)
foflags* = fiFlags;
(* suggested height of font requester *)
foHeight* = fiHeight;
(* replacement text for 'Ok' gadget (max 6 chars) *)
foOkText* = fiOkText;
(* suggested height of font sample display - default 24 *)
foSampleHeight* = TagBase+60;
(* minimum height of font displayed *)
foMinHeight* = TagBase+61;
(* maximum height of font displayed *)
foMaxHeight* = TagBase+62;
(* [TagBase+63 to TagBase+66 used below] *)
(* (V38) call this hook for every font *)
foFilterFunc* = fiFilterFunc;
(*** (V38) tags for rtScreenModeRequestA ***)
(* various flags (see below) *)
scFlags* = fiFlags;
(* suggested height of screenmode requester *)
scHeight* = fiHeight;
(* replacement text for 'Ok' gadget (max 6 chars) *)
scOkText* = fiOkText;
(* property flags (see also RTSC_PropertyMask) *)
scPropertyFlags* = TagBase+90;
(* property mask - default all bits in RTSC_PropertyFlags considered *)
scPropertyMask* = TagBase+91;
(* minimum display width allowed *)
scMinWidth* = TagBase+92;
(* maximum display width allowed *)
scMaxWidth* = TagBase+93;
(* minimum display height allowed *)
scMinHeight* = TagBase+94;
(* maximum display height allowed *)
scMaxHeight* = TagBase+95;
(* minimum display depth allowed *)
scMinDepth* = TagBase+96;
(* maximum display depth allowed *)
scMaxDepth* = TagBase+97;
(* call this hook for every display mode id *)
scFilterFunc* = fiFilterFunc;
(*** tags for ChangeReqAttrA ***)
(* file requester - set directory *)
fiDir* = TagBase+50;
(* file requester - set wildcard pattern *)
fiMatchPat* = TagBase+51;
(* file requester - add a file or directory to the buffer *)
fiAddEntry* = TagBase+52;
(* file requester - remove a file or directory from the buffer *)
fiRemoveEntry* = TagBase+53;
(* font requester - set font name of selected font *)
foFontName* = TagBase+63;
(* font requester - set font size *)
foFontHeight* = TagBase+64;
(* font requester - set font style *)
foFontStyle* = TagBase+65;
(* font requester - set font flags *)
foFontFlags* = TagBase+66;
(*** tags for ScreenModeRequestA ***)
(* (V38) screenmode requester - get display attributes from screen *)
scModeFromScreen* = TagBase+80;
(* (V38) screenmode requester - set display mode id (32-bit extended) *)
scDisplayID* = TagBase+81;
(* (V38) screenmode requester - set display width *)
scDisplayWidth* = TagBase+82;
(* (V38) screenmode requester - set display height *)
scDisplayHeight* = TagBase+83;
(* (V38) screenmode requester - set display depth *)
scDisplayDepth* = TagBase+84;
(* (V38) screenmode requester - set overscan type, 0 for regular size *)
scOverscanType* = TagBase+85;
(* (V38) screenmode requester - set autoscroll *)
scAutoScroll* = TagBase+86;
(*** tags for PaletteRequestA ***)
(* initially selected color - default 1 *)
paColor* = TagBase+70;
(*** tags for ReqHandlerA ***)
(* end requester by software control, set tagdata to REQ_CANCEL, REQ_OK or
in case of EZRequest to the return value *)
rhEndRequest* = TagBase+60;
(*** tags for AllocRequestA ***)
(* no tags defined yet *)
(************
* ReqPos *
************)
ReqPosPointer* = 0;
ReqPosCenterWin* = 1;
ReqPosCenterScr* = 2;
ReqPosTopLeftWin* = 3;
ReqPosTopLeftScr* = 4;
(******************
* RTRH_EndRequest *
******************)
ReqCancel* = 0;
ReqOK* = 1;
(***************************************
* flags for RTFI_Flags and RTFO_Flags *
* or filereq->Flags and fontreq->Flags *
***************************************)
fReqNoBuffer* = 2;
(*****************************************
* flags for RTFI_Flags or filereq->Flags *
*****************************************)
fReqMultiSelect* = 0;
fReqSave* = 1;
fReqNoFiles* = 3;
fReqPatGad* = 4;
fReqSelectDirs* = 12;
(*****************************************
* flags for RTFO_Flags or fontreq->Flags *
*****************************************)
fReqFixedWidth* = 5;
fReqColorFonts* = 6;
fReqChangePalette* = 7;
fReqLeavePalette* = 8;
fReqScale* = 9;
fReqStyle* = 10;
(*****************************************************
* (V38) flags for RTSC_Flags or screenmodereq->Flags *
*****************************************************)
scReqSizeGads* = 13;
scReqDepthGad* = 14;
scReqNonStdModes* = 15;
scReqGuiModes* = 16;
scReqAutoscrollGad* = 18;
scReqOverscanGad* = 19;
(*****************************************
* flags for RTEZ_Flags or reqinfo->Flags *
*****************************************)
ezReqNoReturnKey* = 0;
ezReqLamigaQual* = 1;
ezReqCenterText* = 2;
(***********************************************
* (V38) flags for RTGL_Flags or reqinfo->Flags *
***********************************************)
glReqCenterText* = ezReqCenterText;
glReqHighlightText* = 3;
(***********************************************
* (V38) flags for RTGS_Flags or reqinfo->Flags *
***********************************************)
gsReqCenterText* = ezReqCenterText;
gsReqHighlightText* = glReqHighlightText;
(*****************************************
* (V38) flags for RTFI_VolumeRequest tag *
*****************************************)
vReqNoAssigns* = 0;
vReqNoDisks* = 1;
vReqAllDisks* = 2;
(*
Following things are obsolete in ReqTools V38.
Don't use them in new code!
*)
fReqDoWildFunc* = 11;
ReqHookWildFile* = 0;
ReqHookWildFont* = 1;
CONST
name* = "reqtools.library";
libraryMinimum* = 38;
VAR
base*: ReqToolsBasePtr;
PROCEDURE AllocRequestA* [base,-30]
( type[0]: LONGINT;
tagList[8]: ARRAY OF UT.TagItem )
: ReqToolsReqPtr;
PROCEDURE AllocRequest* [base,-30]
( type[0]: LONGINT;
tag1[8]..: UT.Tag )
: ReqToolsReqPtr;
PROCEDURE FreeRequest* [base,-36]
( req[9]: ReqToolsReqPtr );
PROCEDURE FreeReqBuffer* [base,-42]
( req[9]: ReqToolsReqPtr );
PROCEDURE ChangeReqAttrA* [base,-48]
( req[9]: ReqToolsReqPtr;
tagList[8]: ARRAY OF UT.TagItem );
PROCEDURE ChangeReqAttr* [base,-48]
( req[9]: ReqToolsReqPtr;
tag1[8]..: UT.Tag );
PROCEDURE FileRequestA* [base,-54]
( fileReq[9]: FileRequesterPtr;
VAR fileName[10]: ARRAY OF CHAR;
title[11]: ARRAY OF CHAR;
tagList[8]: ARRAY OF UT.TagItem )
: BOOLEAN;
PROCEDURE FileRequest* [base,-54]
( fileReq[9]: FileRequesterPtr;
VAR fileName[10]: ARRAY OF CHAR;
title[11]: ARRAY OF CHAR;
tag1[8]..: UT.Tag )
: BOOLEAN;
PROCEDURE FreeFileList* [base,-60]
( fileList[8]: FileListPtr );
PROCEDURE EZRequestA* [base,-66]
( bodyFmt[9], gadFmt[10]: ARRAY OF CHAR;
reqInfo[11]: ReqInfoPtr;
argArray[12]: E.APTR;
tagList[8]: ARRAY OF UT.TagItem )
: LONGINT;
PROCEDURE EZRequestTags* [base,-66]
( bodyFmt[9], gadFmt[10]: ARRAY OF CHAR;
reqInfo[11]: ReqInfoPtr;
argArray[12]: E.APTR;
tag1[8]..: UT.Tag )
: LONGINT;
PROCEDURE EZRequest* [base,-66]
( bodyFmt[9], gadFmt[10]: ARRAY OF CHAR;
reqInfo[11]: ReqInfoPtr;
tagList[8]: ARRAY OF UT.TagItem;
argArray[12]..: E.APTR )
: LONGINT;
(* Without result.... *)
PROCEDURE VEZRequestA* [base,-66]
( bodyFmt[9], gadFmt[10]: ARRAY OF CHAR;
reqInfo[11]: ReqInfoPtr;
argArray[12]: E.APTR;
tagList[8]: ARRAY OF UT.TagItem );
PROCEDURE VEZRequestTags* [base,-66]
( bodyFmt[9], gadFmt[10]: ARRAY OF CHAR;
reqInfo[11]: ReqInfoPtr;
argArray[12]: E.APTR;
tag1[8]..: UT.Tag );
PROCEDURE VEZRequest* [base,-66]
( bodyFmt[9], gadFmt[10]: ARRAY OF CHAR;
reqInfo[11]: ReqInfoPtr;
tagList[8]: ARRAY OF UT.TagItem;
argArray[12]..: E.APTR );
PROCEDURE GetStringA* [base,-72]
( VAR buffer[9]: ARRAY OF CHAR;
maxChars[0]: LONGINT;
title[10]: ARRAY OF CHAR;
reqInfo[11]: ReqInfoPtr;
tagList[8]: ARRAY OF UT.TagItem )
: BOOLEAN;
PROCEDURE GetString* [base,-72]
( VAR buffer[9]: ARRAY OF CHAR;
maxChars[0]: LONGINT;
title[10]: ARRAY OF CHAR;
reqInfo[11]: ReqInfoPtr;
tag1[8]..: UT.Tag )
: BOOLEAN;
PROCEDURE GetLongA* [base,-78]
( VAR long[9]: LONGINT; title[10]: ARRAY OF CHAR;
reqInfo[11]: ReqInfoPtr;
tagList[8]: ARRAY OF UT.TagItem )
: BOOLEAN;
PROCEDURE GetLong* [base,-78]
( VAR long[9]: LONGINT; title[10]: ARRAY OF CHAR;
reqInfo[11]: ReqInfoPtr;
tag1[8]..: UT.Tag )
: BOOLEAN;
PROCEDURE FontRequestA* [base,-96]
( fontReq[9]: FontRequesterPtr;
title[11]: ARRAY OF CHAR;
tagList[8]: ARRAY OF UT.TagItem )
: BOOLEAN;
PROCEDURE FontRequest* [base,-96]
( fontReq[9]: FontRequesterPtr;
title[11]: ARRAY OF CHAR;
tag1[8]..: UT.Tag )
: BOOLEAN;
PROCEDURE PaletteRequestA* [base,-102]
( title[10]: ARRAY OF CHAR;
reqInfo[11]: ReqInfoPtr;
tagList[8]: ARRAY OF UT.TagItem )
: LONGINT;
PROCEDURE PaletteRequest* [base,-102]
( title[10]: ARRAY OF CHAR;
reqInfo[11]: ReqInfoPtr;
tag1[8]..: UT.Tag )
: LONGINT;
PROCEDURE ReqHandlerA* [base,-108]
( hinfo[9]: HandlerInfoPtr;
sigs[0]: S.SET32;
tagList[8]: ARRAY OF UT.TagItem )
: LONGINT;
PROCEDURE ReqHandler* [base,-108]
( hinfo[9]: HandlerInfoPtr;
sigs[0]: S.SET32;
tag1[8]..: UT.Tag)
: LONGINT;
PROCEDURE SetWaitPointer* [base,-114]
( window[8]: I.WindowPtr );
PROCEDURE GetVScreenSize* [base,-120]
( screen[8]: I.ScreenPtr;
VAR width[9],height[10]: LONGINT );
PROCEDURE SetReqPosition* [base,-126]
( reqPos[0]: LONGINT;
VAR nw[8]: I.NewWindow;
screen[9]: I.ScreenPtr;
window[10]: I.WindowPtr );
PROCEDURE Spread* [base,-132]
( VAR posArray[8]: ARRAY OF LONGINT;
sizeArray[9]: ARRAY OF LONGINT;
totalSize[0], min[1], max[2], num[3]: LONGINT );
PROCEDURE ScreenToFrontSafely* [base,-138]
( screen[8]: I.ScreenPtr );
(*--- functions in V38 or higher (distributed as Release 2.0) ---*)
PROCEDURE ScreenModeRequestA* [base,-144]
( screenmodeReq[9]: ScreenModeRequesterPtr;
title[11]: ARRAY OF CHAR;
tagList[8]: ARRAY OF UT.TagItem )
: BOOLEAN;
PROCEDURE ScreenModeRequest* [base,-144]
( screenmodeReq[9]: ScreenModeRequesterPtr;
title[11]: ARRAY OF CHAR;
tag1[8]..: UT.Tag )
: BOOLEAN;
PROCEDURE CloseWindowSafely* [base,-150]
( window[8]: I.WindowPtr );
PROCEDURE LockWindow* [base,-156]
( window[8]: I.WindowPtr )
: LONGINT;
PROCEDURE UnlockWindow* [base,-162]
( window[8]: I.WindowPtr;
winLock[9]: LONGINT );
PROCEDURE [0] Assert* (cond: BOOLEAN; msg: ARRAY OF CHAR);
VAR str : E.LSTRPTR;
BEGIN
IF ~cond THEN
str := SYS.ADR ("Assert");
VEZRequestTags
( msg, "Abort", NIL, NIL,
ezReqTitle, str,
UT.done );
HALT (20)
END;
END Assert;
(*-- Library Base variable --------------------------------------------*)
<*$LongVars-*>
(*-----------------------------------*)
PROCEDURE* [0] CloseLib (VAR rc : LONGINT);
BEGIN
IF base # NIL THEN E.CloseLibrary (base) END;
END CloseLib;
(*-----------------------------------*)
PROCEDURE [0] OpenLib * (mustOpen : BOOLEAN);
BEGIN
IF base = NIL THEN
base :=
SYS.VAL
( ReqToolsBasePtr,
E.OpenLibrary (name, libraryMinimum));
IF base # NIL THEN Kernel.SetCleanup (CloseLib)
ELSIF mustOpen THEN HALT (100)
END
END
END OpenLib;
BEGIN
base := NIL
END ReqTools.